Bonding of Multiple Concurrent Data Streams Among Multiple Devices

ABSTRACT

Examples are disclosed for hosting a communication session between a computer device and a destination communication device in an Internet Protocol (IP) based packet data network. A computer device receives multiple concurrent IP packet data streams each representative of the same content but received over corresponding multiple communication links. The original IP packet data stream comes from the communications server. At least one IP packet data stream representative of the original IP packet data stream traverses a communication link through a second communication device working in tandem with the communications server before arriving at the computer device. The computer device determines a packet arrival time for each corresponding packet in the multiple concurrent IP packet data streams. The computer device then creates a bonded IP packet data stream by selecting the first to arrive packet for each time slot from among corresponding time slots of the multiple concurrent IP packet data streams.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is claims priority to and the benefit of U.S. Prov.App. 62/158,858 filed May 8, 2015 entitled “Optimal Use of Multiple IPStreams for Voice Communications” and U.S. Prov. App. 62/205,950 filedAug. 17, 2015 entitled “Bonding Of Multiple Concurrent Data StreamsAmong Multiple Devices”.

TECHNICAL FIELD

Examples described herein are generally related to techniques formanaging concurrent Internet Protocol (IP) data streams among multipledevices for voice, video, and data communications.

BACKGROUND

Most Internet Protocol (IP) network enabled computer devices are capableof sending and receiving IP data packets over one or more networks toother network enabled computer devices. Such computer devices mayinclude, but are not limited to, desktop computers, laptop or notebookcomputers, tablet computers, and smartphones. In the area ofcommunications, there are packet based protocols for streaming data,voice, and video using proprietary and/or standards based software. Onesuch commercial example of a proprietary example is Skype™. A Skype™user may communicate with other Skype™ users (and in some scenariosnon-Skype™ users) by streaming IP data packets through a communicationsserver to one or more other endpoints also communicable with thecommunications server.

This configuration works well enough when the endpoint(s) have goodnetwork connectivity with the communications server to which they canreliably send and receive the IP data packets. Often, however, the IPdata packet stream may be interrupted or otherwise compromised resultingin garbled voice communication and/or inconsistent video communicationdue to jitter, latency, packet loss, etc. There is currently nomechanism available to the user to create a secondary or redundantconcurrent IP data packet stream with the assistance of a second deviceover the same or a different communication link (or both) to the server.If such a mechanism were available to the user, the overall quality ofthe communication session between the endpoint and the communicationsserver could be significantly enhanced using some packet stream bondingtechniques.

The embodiments described herein offer such a mechanism of creatingmultiple concurrent (redundant) IP data packet streams using a secondarydevice that may be used to supplement the main IP data packet stream.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example block diagram for a networked environment.

FIG. 2 highlights the communication between the primary and secondarydevices in the example block diagram of FIG. 1.

FIG. 3 illustrates an example logic flow diagram describingcommunication from an endpoint with the assistance of a mobile device toa communications server according to an embodiment of the invention.

FIG. 4 illustrates another example logic flow diagram describingcommunication from the communications server to the endpoint with theassistance of a mobile device according to an embodiment of theinvention.

FIG. 5 illustrates a bonded IP stream for a plurality of IP packet datastreams based on first packet to arrive according to an embodiment ofthe invention.

FIG. 6 illustrates a bonded IP stream for a plurality of IP packet datastreams based on packet quality according to an embodiment of theinvention.

DETAILED DESCRIPTION

The embodiments described herein disclose systems and methods forintelligently managing multiple concurrent IP packet data streamsbetween a hybrid mobile device and a network based communications serverto enhance communication sessions between or among communicationdevices. The systems and methods of the invention may be embodied in andperformed by communication devices, network based communications serverand other devices, and software instructions executed by some or all ofsuch devices, as will be explained in detail below. The different typesof networks contemplated herein include, for example, cellular mobilenetworks both circuit switched and IP based, and data networks, such asthe Internet or other IP-based networks, including wide area networks,local area networks, and combinations thereof both wireless (e.g.,802.11) and wireline (e.g., Ethernet).

As used herein the term “communication session” is meant to generallyindicate any one-way or two-way exchange of information between two ormore communication devices. Communication sessions may include voice,data, video, and multimedia communication sessions, or any other type ofdata communication sessions or messaging exchanges. As used herein, theterm “mobile device” is meant to include a mobile device capable ofcommunicating wirelessly over at least two interfaces (802.11 WiFi and acellular IP based interface—e.g., LTE) an often a third wirelessinterface (Bluetooth). As used herein, the term “computer device” or“endpoint” is meant to include a computer device capable ofcommunicating wirelessly over at least an 802.11 WiFi and often anothershort range wireless interface such as Bluetooth. A mobile device,computer device, and endpoint may also be referred to as acommunications device. As used herein, the term “communication link” isintended to mean a physical and/or logical channel that connects two ormore mobile devices, computer devices, or endpoints with a cloud basedcommunications server.

A communication link between two devices does not necessarily involvethe communications server. A communication link may also be between twodevices on a peer to peer basis over a wireline connection (e.g., a datacable) or a short range wireless connection such as Bluetooth. Acommunication link may be a signaling link or a media link. In thiscontext, a communication session may be established via one or morecommunication links in which a network based communications server maybe an endpoint for each of the communication links. The network basedcommunications server may then join one or more communication linkstogether to establish a communication session between or among two ormore devices. One or more IP data media streams may be transmitted by asingle mobile device or endpoint over one or more communication links. Anetwork based communications server may be situated betweencommunication devices thereby making the network based communicationsserver an endpoint in a communication link. The network basedcommunications server may be hosted within an IP network such as, forinstance, the Internet or a LAN/WAN accessible to the Internet. Inaddition to the foregoing, two communication devices may also operate intandem to communicate with the communications server as will bedescribed below.

Moreover, many communication devices are capable of utilizing multipledifferent networks simultaneously and independently. For instance, thesecommunication devices include the ability to transmit and receive IPpacket data on an IP based network over an 802.11 wireless fidelity(WiFi) connection as well as a cellular IP data network. Other IP basednetworks operating using different protocols than 802.11 or cellular IP(e.g., LTE) may also be implemented into the embodiments describedherein.

Therefore, references herein to a computer device, mobile device,endpoint, or communication device capable of connecting to orcommunicating via a mobile carrier network refer to a communicationdevice equipped with a cellular transceiver for wireless communicationwith base stations and other mobile carrier network access points forpurposes of accessing circuit switched voice services and/or cellular IPdata services. Similarly, references herein to a computer device, mobiledevice, endpoint, or communication device capable of connecting to orcommunicating via an IP data network refer to a communication deviceequipped with a transceiver or other network interface for wirelesscommunication (e.g., 802.11 WiFi) with a router or other IP data networkaccess point.

FIG. 1 illustrates an exemplary networked environment 100 forimplementing certain exemplary embodiments described herein. Thenetworked environment 100 may include multiple distinct inter-connectednetworks such as, for instance, a large scale internet protocol (IP)network (e.g., the Internet) 122, one or more IP based local areanetworks or wide area networks (LAN/WAN) 114 including an 802.11wireless router 112 and a mobile carrier network (e.g., cellularnetwork) 118 including a basestation tower 116 for interfacing withcellular enabled devices.

Other alternative IP based networks and access points (not shown) may beimplemented and utilized in such a networked environment to furthersupplement and/or add to the number and diversity of communication linksbetween endpoints 102, 104, 128 and a communications server 120.

Such alternative networks may include wireless networks that do notutilize the same protocols and/or operate over the frequency spectrumtypically associated with 802.11 (e.g., 2.4 GHz and 5.8 GHz WiFi) ortoday's cellular (e.g., 800 MHz-1900 GHz). One example of such analternate wireless network may be WiMAX (e.g., 802.16). Other examplesmay include, but are not limited to, television whitespace networkfrequencies and other unlicensed (or yet to be licensed) frequencies.These may include, for example, a wireless network operating within afrequency range of 700 MHz or less, and a wireless network operating afrequency range of 3.5 GHz and 3.7 GHz.

While these distinct networks may utilize different protocols andsignaling schemes, there are various interfaces that allow for theseamless transition of voice and data (including text, audio, and video)such that various communication endpoints may communicate with oneanother over one or more of these inter-connected networks.

A mobile carrier network 118 (sometimes referred to as a cellularnetwork) may come in different varieties based on the circuit switchedradio frequency (RF) transmission scheme between a communication device104 known as a wireless handset (e.g., mobile, cellular, or hybridphone) and the mobile carrier network basestation 116 that is incommunication with the communication device 104. Two such circuitswitched RF transmission schemes are the Global System for MobileCommunication (GSM) and Code Division Multiple Access (CDMA). Thesecircuit switched RF transmission schemes are incompatible with oneanother necessitating an intervening interface to allow communicationbetween communication devices 104 on either network. In addition, eachnetwork may operate over specific frequency ranges. Often, there mayeven be an intervening network such as the Public Switched TelephoneNetwork (PSTN) (not shown) between two distinct mobile carrier networks.Each mobile carrier network 118 may include an interface to the PSTN(not shown) such that calls crossing that interface can be handled bythe receiving network whether it is a mobile carrier network 118 or thePSTN.

Various mobile carrier network operators base their network 118 on oneof the circuit switched RF transmission schemes and provide circuitswitched service to communication devices 104 using that RF transmissionscheme over a defined frequency band. For example, a communicationdevice 104 may wirelessly communicate with a basestation 116 that servesas an access network to the circuit switched portion of the mobilecarrier network 118. The basestation 116 authenticates and authorizesthe communication device 104 to the mobile carrier network 118 and, inconjunction with other equipment within the mobile carrier network 118,can manage circuit switched calls to and from the communication device104. The mobile carrier network 118 provides connectivity for anycommunication device 104 capable of cellular transmission that arephysically located within range of the mobile carrier network 118. Therange of a mobile carrier network 118 may depend in part on anamplification, power, and/or energy associated with the antennascomprising cellular basestation 116, communication device 104 and thelike. As the communication device 104 moves toward the outer range ofthe mobile carrier network 118, the strength of the cellular signalsdegrade.

The same applies when accessing the mobile carrier network's 118cellular IP data services. Once authenticated, the communication device104 may utilize an IP protocol over the cellular connection to exchangeIP data with other devices coupled to the Internet 122 including routersand servers along the path of an IP data packet stream as well as acommunications server 120.

Similarly, an IP based data network like the a LAN 114 or Internet 122may provide wireless connectivity to communication device 104 or otherdevices within range of an IP access point 112. For instance, an IPaccess point 112 may provide wireless connectivity to the Internet 122via a LAN 114 using any of the 802.11 WiFi standards and/or any othertype of IP based connectivity standard. As will be appreciated by thoseof skill in the art, a communication device 104 may experience astronger connection signal when located closer to an IP access point 112than when located further away from the IP access point 112. Thus, thestrength of the wireless data connection may fade as the communicationdevice 104 moves away from an IP access point 112.

The collection of IP based data networks illustrated in FIG. 1 such asLAN/WANs 114, cellular data networks 118, alternative wireless networks(not shown), and the Internet 122 may all run on a packet based datatransfer protocol (e.g., IP) characterized as packet switching. Packetswitching essentially chops up the data to be sent (e.g., text, voice,data) into a stream of packets and transfers the packet stream across anIP network to a destination where the packets are re-assembled into theoriginal data. Voice over IP (VoIP) is a specialized subset of IP packetbased communication directed to IP telephony. A communication device 104may utilize an IP access point 112 to access a local IP network 114 thatin turn may access a larger IP network like the Internet 122. The IPaccess point 112 may be wired, wireless (e.g., 802.11 WiFi), or acombination wired/wireless access point such as those illustrated inFIG. 1. A VoIP enabled communication device 104 may communicate with anIP access point 112 to gain access to the larger IP network 122 and,eventually, other communication devices 128.

In addition to VoIP, the communication devices 104 and computerdevice(s) 102 may utilize IP standards to send and receive video dataunder one or more video codecs.

In certain embodiments, mobile carrier network(s) 118 include cellularnetworks or portions of cellular networks based on a variety of IP dataprotocols such as, but not limited to, General Packet Radio Service(GPRS), Enhanced Data for GSM Evolution (EDGE), Evolution-Data Optimized(EV-DO), High Speed Packet Data (HSPD), High Speed Downlink PacketAccess (HSPDA), Long-Term Evolution (LTE), Voice-over Long-TermEvolution (VoLTE), Wideband Code Division Multiple Access (WCDMA),Universal Mobile Telecommunications System (UMTS), or High Rate PacketData (HRPD) and/or any other cellular network standards.

IP based data networks 114 and 118 (cellular data portion) include, forexample, the Internet 122, one or more intranets, wide area networks(WANs), local area networks (LANs) 114, and the like, portions or all ofwhich may be wireless and/or wired. For instance, an IP based datanetwork 114, 118 (cellular data portion) may be a wireless network or aportion of a wireless network implemented using an 802.11 standard suchas WiFi, an 802.16 standard such as WiMAX, a cellular IP protocol (e.g.,LTE) and/or any other wireless data communication standard. As is knownin the art, communication devices 104 via the various networks 112, 118,122 may interface with a communications server 120 through gatewaydevices, routers and/or other appropriate devices (not shown).

FIG. 1 also illustrates a direct (e.g., peer to peer) wired or wirelesscoupling between a computer device 102 and a communication device 104.This coupling may be a cable (wired) or a short range RF coupling suchas, for instance, Bluetooth.

From a Quality of Service (QoS) standpoint, bonding multiple concurrentIP packet data streams representative of the same content over differentcommunication links received into the same communications server 120 orcomputer device 102 can improve the quality and reliability of acommunication session between those devices. For instance, communicationsessions over 802.11 WiFi may offer the lowest cost alternative to theuser and/or service provider while also offering relatively high qualityof service (QoS). This is the most common configuration for manycommunication services like Skype™ or Google™ Voice. However, thecomputer device 102 executing an IP based communication application(e.g., Skype™, Google™ Voice) may encounter poor network conditions on atemporary basis. In such cases, the quality of the communicationsession, at least between the communications server 120 and the computerdevice 102 may degrade considerably. Pairing a communication device 104that is also communicable with the communications server 120 with thecomputer device 102 adds a degree of redundancy that enables thecomputer device 102 to maintain the communication session at asatisfactory quality level.

For example, the computer device 102 may simultaneously send an IPpacket data stream directly to the communications server 120 over its802.11 connection (wired or wireless) and also to the pairedcommunication device 104 over a peer to peer connection (e.g., Bluetoothor a cable). The communication device 104 may then relay the IP packetdata stream to the communications server 120 over one or more IP dataconnections simultaneously. These IP connections may include an 802.11WiFi connection, one or more cellular IP data connections via one ormore mobile carrier networks 118, and one or more alternative IP dataconnections via one or more alternative wireless networks (not shown).

The basic approach is to maintain concurrent IP packet data streamsbetween the communications server 120 and the computer device 102 suchthat when the primary IP packet data stream from the computer device 102experiences connectivity issues that cause QoS to degrade, the affectedpackets may be replaced using one of the other concurrent IP packet datastreams coming from the communications device 104. Depending on thedirection of transmission, at the communications server 120 or at thecomputer device 102, the multiple received IP packet data streams may bere-assembled using a first packet to arrive within an allowed time slotmethodology or a highest quality packet to arrive within an allowed timeslot methodology. From the perspective outbound communication from thecomputer device 102, the computer device 102 sends an IP packet datastream (packets) to the communication device 104 over the short rangepeer to peer wireless (e.g., Bluetooth) or wired connection. The IPpackets are then redirected to the communications server 120 using theradio(s) native to the communication device 104 as well as the networksto which the radios connect. Thus, with the assistance of thecommunication device 104, the integrity of the IP packet data streambetween the computer device 102 and the communications server 120 may bemaintained at quality levels that exceed a single communication linkbetween computer device 102 and communications server 120. Thismulti-streaming/bonding approach works in both directions when thecommunication device 104 is situated in at least one path between thecomputer device 102 and the communications server 120. Specifically, thecomputer device 102 and the communications server 120 can send outmultiple concurrent IP packet data streams. Similarly, the computerdevice 102 and the communications server 120 can receive multiple IPpacket data streams and intelligently bond the received IP packet datastreams into a single IP packet data stream.

In an example embodiment, the communications server 120 may be mediatinga communication session between a computer device 102 and othercommunication device(s) 128. Typically, the computer device 102 isconnected to LAN 114 via access point 112 and passes its IP packet datastream through those components to the communications server 120 via theInternet 122. The communications server 120 may coordinate and managethe communication session for the computer device 102 and a plurality ofother communication devices 128. A communication device 104 may also becommunicable with the communications server 120. In addition, thecommunication device 104 may further be directly communicable with thecomputer device 102 over a peer to peer wired or wireless connection.The peer to peer coupling between the computer device 102 and thecommunication device 104 set up the opportunity for those devices towork in tandem with the communications server 120 as will be describedbelow. In addition, the computer device 102 and the communicationsserver 120 may include IP multi-streaming (IPMS) logic adapted tosend/receive multiple IP packet data streams and intelligently assemblereceived IP packet data streams into a single IP packet data stream.

FIG. 2 highlights the communication exchange between the primary andsecondary devices in the example block diagram of FIG. 1. In thisexample the primary device is computer device 102 and the secondarydevice is communications device 104. As mentioned above, the computerdevice 102 may only be capable of connecting to the communicationsserver 120 over a single IP network access point 112. The connectionbetween computer device 102 and IP access point 112 may be wired (e.g.,Ethernet) or wireless (e.g., WiFi 802.11). Either way, the computer mayonly be capable of sending a single IP packet data stream to thecommunications server 120. In FIG. 1, this single IP packet data streamis denoted as data stream a 106 a. Data stream a 106 a represents thecontent of a communication session between the computer device 102 andthe communications server 120.

Computer device 102 may also be communicatively coupled withcommunication device 104 such that computer device 102 maysimultaneously send a copy of data stream a noted as 106 b tocommunication device 104. Data stream a is denoted as 106 b to indicatethat it is being sent to a different destination over a differenttransmission mechanism. Communication device 104 may include multipleradios communicable with multiple IP networks. For instance, acommunication device such as a smartphone may have both a cellular radioand an 802.11 WiFi radio each capable of sending and receiving IP datapackets over different networks, a mobile carrier network 118 and a LANnetwork 114 before converging on the communications server 120 overInternet 122. Similarly, the communications device 104 may receivemultiple IP packet data streams 108, 110 from communications server 120and relay same to computer device 102. On the receive side, computer 102may further include software denoted as a bonding process 132 capable ofaggregating and organizing the multiple concurrent received IP packetdata streams—106 a directly from the communications server 120 and 108,110 from communication device 104 into a single bonded IP packet datastream for output to a user of computer device 102. The bonding process132 may be first packet to arrive based or highest quality packet toarrive within a given time slot based. Either way, the intelligentbonding of multiple concurrent IP packet data streams decreases the oddsthat a packet is dropped due to jitter, latency, loss, etc. since thesame packet would have to be dropped from all of the concurrentlyreceived IP packet data streams. So long as each packet arrives on atleast one of the multiple IP packet data streams, the bonded IP packetdata stream will remain intact. Even if there is not 100% packetreception, there is a higher percentage of packet reception under thismulti-streaming/bonding approach than without.

Included herein is a set of flow charts representative of exemplarymethodologies for performing novel aspects of the disclosedarchitecture. While, for purposes of simplicity of explanation, the oneor more methodologies shown herein, for example, in the form of a flowchart or flow diagram, are shown and described as a series of acts, itis to be understood and appreciated that the methodologies are notlimited by the order of acts, as some acts may, in accordance therewith,occur in a different order and/or concurrently with other acts from thatshown and described herein. For example, those skilled in the art willunderstand and appreciate that a methodology could alternatively berepresented as a series of interrelated states or events, such as in astate diagram. Moreover, not all acts illustrated in a methodology maybe required for a novel implementation.

FIG. 3 illustrates an example logic flow diagram 300 according to anembodiment of the invention. FIG. 3 describes the send side processingand logic flow from a computer device 102 to the communications server120 for a given communication session. In this embodiment, the multipleIP packet data streams 106 a, 108, 110 flow to communications server 120from both a computer device 102 and a communications device 104. Thecomputer device 102 and a communications device 104 work in tandem topresent the communications server 120 with redundant concurrent IPpacket data streams 106 a, 108, 110. The initial IP packet data stream106 a originates in the computer device 102 and is copied to thecommunications device 104 so that both redundant versions may be sent tothe communications server 120 over multiple IP data channels.

In another embodiment, the packets may be intentionally encodeddifferently for certain streams. For example, a cellular IP data streammay be encoded with less (but still a sufficient amount of) data than aWiFi IP data stream because it may cost less to send less data overcellular than WiFi. Thus, a hypothetical 500 byte data packet sent overWiFi may be the highest quality packet but a corresponding 180 bytepacket sent over cellular data may still contain enough information forthe application (e.g., VoIP) to function properly. Sending 180 bytesrather than 500 bytes represents a cost savings of 64% on the cellularIP data charges. It should be noted that the packet with less data stillcorresponds in time with the packet having more data. That is, they willeach fill the same time slot in the corresponding IP data streams.

In block 305, the computer device 102 establishes a connection with thecommunications device 104 capable of exchanging IP packet data. Theconnection may be wired such as, for instance, a USB cable between thedevices. The connection may also be wireless such as, for instance, aBluetooth connection or an 802.11ad connection. Other short rangewireless protocols may also be used for this connection including other802.11 WiFi variants.

In block 310, the computer device 102 may send an IP packet data stream106 b to the communications device 104 over the established dataconnection from block 305. The IP packet data stream 106 b may includedata, voice, and/or video packets. The computer device 102 may alsoestablish a connection with the communications device 104 capable ofexchanging IP packet data at block 315. This connection may be over acable (e.g., Ethernet) connected to a router/modem or via 802.11 WiFiwith a network access point 112 having router/modem capabilities. Atthis point the computer device 102 may have established two (2) separateconnections to two (2) different destinations, each connection capableof sending and receiving one or more IP packet data streams 106. Blocks305, 310, and 315 assume that computer device 102 can execute a softwareapplication capable of creating an IP packet data stream 106. Oneexample of an IP packet data stream 106 may be a voice communicationsession using Voice-over Internet Protocol (VoIP) utilizing one or moreknown audio codecs. Another example of an IP packet data stream 106 maybe a video communication session utilizing one or more known videocodecs. The remainder of the description of FIG. 3 assumes acommunication session (video or voice) between the computer device 102and one or more other communication devices 128 mediated by a cloudbased communications server 120 therebetween. Thus, the IP packet datastream 106 representative of the communication session is sent from thecomputer device 102 to the communications device 104 as IP packet datastream 106 b (block 310) and simultaneously sent from the computerdevice 102 to the communications server 120 as IP packet data stream 106a (block 315).

In block 320, the communications device 104 may initiate and establishmultiple IP data connections with the communications server 112. Forexample, the communications device 104 may have a first IP dataconnection with the communications server 112 via 802.11 WiFiconnectivity to access point 112 that in turn has connectivity to thecommunications server 120 via a local area network 114 coupled with theInternet 122. In addition, the communications device 104 may have asecond IP data connection with the communications server 120 via acellular IP data connection with a basestation 116 within a mobile orcellular network 118 that is connected to the Internet 122. Other IPdata connections between the communications device 104 and thecommunications server 120 may exist over other cellular networks (notshown) or over an alternative wireless network (not shown) coupled withthe Internet 122.

At block 325, the computer device 102 may send the IP packet data stream106 a indicative of the communication session to the communicationserver 120 using the connection established at block 315. Concurrentlyat block 330, the communications device 104 may send the IP packet datastream 108, 110 indicative of the communication session to thecommunication server 120 using the connections established at block 320.That is, the communications device 104 may send the IP packet datastream 106 b received from the computer device 102 over two (2) or morecommunication links destined for the communications server 120.

At block 335, the communications server 120 may receive simultaneousconcurrent IP packet data streams 106 a, 108, 110 from the computer 102and the communication device 104 over the IP data connectionsestablished in blocks 315 and 320. Each of the IP packet data streams106 a, 108, 110 may be representative of the same content but unique inthe path to the communications server 120. In one embodiment, thecontent of the IP packet data streams 106 a, 108, 110 may be, forinstance, encoded as a VoIP Real-time Transport Protocol (RTP) datastream.

At block 340, the communications server 120 may determine a packetarrival time for corresponding packets in each of the IP packet datastreams 106 a, 108, 110. For example, it may be determined the firstpacket from IP packet data stream 106 a (e.g., from the computer device102) may arrive ahead of the first packets from IP packet data streams108, 110 (e.g., from the 802.11 WiFi and cellular connections of thecommunication device 104). The second packet from IP packet data stream110 (e.g., from the cellular connection of the communication device 104)may arrive ahead of the second packets from IP packet data streams 106a, 108 (i.e., from the 802.11 WiFi connections of computer device 102and communication device 104). The same determination may be made foreach subsequent packet that arrives at the communications server 120.

At block 345, the communications server 120 may assemble a bonded packetdata stream 126 using the first to arrive packet from each of the IPpacket data streams 106 a, 108, 110. For example, packet 1 in theassembled IP packet data stream 126 may be from the 802.11 WiFi IPpacket data stream 106 a while packet 2 may be from the cellular IPpacket data stream 110. Packet 3 may be from the 802.11 WiFi IP packetdata stream 108 of the communication device 104 while packet 4 may befrom the 802.11 WiFi IP packet data stream 106 a. The resultingassembled IP packet data stream 126 may be a combination of the multipleIP packet data streams 106 a, 108, 110 using the first to arrive ofcorresponding packets from the IP packet data streams 106 a, 108, 110.The assembled IP packet data stream 126 thus represents a more stableand reliable overall VoIP RTP stream for a telephone call since it isassembled or bonded from, in this example, among three separate IPpacket data streams 106 a, 108, 110.

At block 350, the communications server 120 may then send the bonded IPpacket data stream 126 to one or more destination communication devices128 as per the constructs of the communication session. Thus, the othercommunication devices 128 receive the benefit of a more reliable IPpacket data stream 126 on the inbound side since the communicationsserver 120 was able to assemble the bonded IP packet data stream 126from among three (3) distinct IP packet data streams 106 a, 108, 110containing content representative of, for instance, a voicecommunication it received from the computer device 102 and thecommunication device 104 working in tandem.

FIG. 4 illustrates another example logic flow diagram 400 according toan embodiment of the invention. FIG. 4 describes the receive sideprocessing and logic flow of a computer device 102 receiving IP packetdata streams 106 a, 108, 110 from the communications server 120 and thecommunication device 104 for a given communication session. In thisembodiment, the flow of communication runs from the communicationsserver 120 to the computer 102. The flow of communication also runs fromthe communications server 120 to the communication device 104 then intothe computer device 102.

In block 405, the computer device 102 may receive a return IP packetdata stream 106 a from communications server 120 over the communicationlink established in block 315 of FIG. 3. This IP packet data stream 106a may be duplicative of the IP packet data stream 130 thatcommunications server 120 received from an other communication device128 that is party to the communication session. In a concurrent processrepresented by block 410, communications server 120 may send andcommunication device 104 may receive multiple IP packet data streams108, 110 over different networks 114, 118 using the communication linksestablished in block 320 of FIG. 3. In block 415, the communicationdevice 104 may then repackage and relay the IP packet data streams 108,110 to the computer device 102 using the communication link establishedin block 305 of FIG. 3. Each of the IP packet data streams 106 a, 108,110 may be representative of the content in IP packet data stream 126received into the communications server 120 from the other communicationdevice(s) 128 but unique in the path from the communications server 120to the computer device 102.

In block 420, computer device 102 may determine the first to arrivepacket within each time slot for all the received IP packet data streams106 a, 108, 110. In an alternative embodiment, computer device 102 maydetermine the highest quality to arrive packet within each time slot forall the received IP packet data streams 106 a, 108, 110. In block 425,computer server 102 may assemble a bonded IP packet data stream fromamong the received IP packet data streams 106 a, 108, 110 using thefirst packet to arrive approach or the highest quality packet to arriveapproach. Computer device 102 may then present the bonded IP packet datastream to the user in block 430.

FIG. 5 illustrates a bonded IP packet data stream 126 created by thecommunications server 120 for a plurality of IP packet data streams 106a, 108, 110 based on the first packet to arrive within a given time slotapproach according to an embodiment of the invention. In this example,there are three IP packet data streams 106 a, 108, 110 labeled a, b, andc respectively.

As described above with respect to FIGS. 3-4, the three IP packet datastreams 106 a, 108, 110 arrive into the communications server 120 viaseparate communication links and/or separate devices. The original IPpacket data stream 106 a may be a representation of voice from acommunication session emanating from the computer device 102. This IPpacket data stream 106 a may then be sent to two different destinationsconcurrently. The first destination may be the communications server 120over an Ethernet or 802.11 WiFi communication link while the seconddestination may be to a communication device 104 situated in relativelyclose proximity to the computer device 102 over a wired or wireless(e.g., Bluetooth, 802.11 ad) communication link. The communicationdevice 104 may then relay the IP packet data stream 106 a concurrentlyto the communications server 120 over multiple communication links(e.g., 802.11 WiFi and/or cellular IP data). The IP packet data streamsbetween the communication device 104 and the communications server 120may be re-labeled as 108 (802.11 WiFi) and 110 (cellular IP data)depending on the communication link used.

The communications server 120 and the computer device 102 may beequipped to send and receive multiple concurrent IP packet data streams106 a, 108, 110 as well as merge the multiple IP packet data streams 106a, 108, 110 into a single bonded IP packet data stream. From theperspective of the computer device 102, the uplink direction may becharacterized as an IP packet data stream flowing from the computerdevice 102 to the communications server 120 while the downlink directionmay be characterized as an IP packet data stream flowing to the computerdevice 102 from the communications server 120. The techniques describedherein may also apply to the uplink only, the downlink only, or bothuplink and downlink. For example, the network conditions for uplink maybe more problematic than downlink necessitating a multi-stream approachfor the uplink but not the downlink. The same logic may be applied whenthe downlink is more problematic than the uplink.

Each of the IP packet data streams a, b, and c may be traversingdifferent networks between the computer device 102 and thecommunications server 120. The IP packet data streams 106 a, 108, 110have been synchronized to be concurrent with one another. In thisexample, the IP packet data streams 106 a, 108, 110 may be characterizedas Real-time Transport Protocol (RTP) audio streams representative ofVoIP communications. The data streams may be referred to as RTP-a,RTP-b, and RTP-c. Thus, when the computer device 102 or thecommunications server 120 encodes a packet for each time slot of apacket data stream, instead of sending the packet to a single networkinterface, it sends the exact same packet to all of the networkinterfaces simultaneously resulting in multiple concurrent IP packetdata streams 106 a, 108, 110 between the computer device 102 and thecommunications server 120. In these embodiments, a communication device104 is also used to assist in the multi-streaming approach since thecomputer device 102 may not be equipped to access to an IP cellular datanetwork interface. Thus, the communication device 104 may be responsiblefor receiving a single IP packet data stream from the computer device102 and relaying it to the communications server 120 as multiple IPpacket data streams over multiple communication links. Conversely, thecommunication device 104 may receive multiple IP packet data streamsover multiple communication links from the communications server 120 andbe responsible for relaying those IP packet data streams to computerdevice 102.

In another embodiment, the packets may be intentionally encodeddifferently for certain streams. For example, a cellular IP packet datastream may be encoded with less (but still a sufficient amount of) datathan an Ethernet or 802.11 WiFi IP packet data stream because it maycost less to send less data over cellular than Ethernet or 802.11 WiFi.Thus, a hypothetical 500 byte data packet sent over Ethernet or 802.11WiFi may be the highest quality packet but a corresponding 180 bytepacket sent over cellular data may still contain enough information forthe application (e.g., VoIP) to function properly. Sending 180 bytesrather than 500 bytes represents a cost savings of 64% on the cellulardata charges. It should be noted that the packet with less data stillcorresponds in time with the packet having more data. That is, they willeach fill the same time slot in the corresponding IP packet datastreams.

Further by way of example, IP packet data stream 106 a may be traversingan Ethernet or 802.11 WiFi network 114, IP packet data stream 108 may betraversing an 802.11 WiFi network 114, and IP packet data stream 110 maybe traversing an IP cellular data network 118. Each of the IP packetdata streams 106 a, 108, 110 may be representative of the same contentand synchronized in time but unique in the path taken between to thecommunications server 120. The timing diagram of FIG. 5 provides thestatus of the first six packets for each IP packet data stream on thereceiving end within the communications server 120. FIG. 5 indicatesthat packet 1 within slot 1 for each of IP packet data streams 106 a,108, 110 was received and that packet 1 c (cross-hatched forillustration) from the IP packet data stream 110 was received slightlyahead of packets 1 a and 1 b from IP packet data streams 106 a and 108respectively. Thus, in the resulting bonded IP packet data stream 126,packet 1 c is the first packet. Packets 2 a and 2 c from IP packet datastreams 106 a and 110 respectively were received in time slot 2. In thistime slot, packet 2 b from IP packet data stream 108 was not receivedfor some reason perhaps due to network connectivity issues such asjitter, latency or packet loss. Packet 2 a arrived slightly ahead ofpacket 2 c. Thus, packet 2 a is the second packet in the bonded IPpacket data stream 126. Similarly, packet 3 c is the third packet in thebonded IP packet data stream 126 as it beat out packet 3 b while packet3 a never arrived in time slot 3. Packet 4 b is the fourth packet of thebonded IP packet data stream 126 in time slot 4. Packet 5 a is the fifthpacket of the bonded IP packet data stream 126 in time slot 5. Packet 6b is the sixth packet of the bonded IP packet data stream 126 in timeslot 6.

The resulting bonded IP packet data stream 126 reads as follows: 1 c-2a-3 c-4 b-5 a-6 b. In this example, two packets from each of IP packetdata streams 106 a, 108, 110 were combined, based on arrival time, tocreate the bonded IP packet data stream 126. The example illustrates howmultiple IP packet data streams 106 a, 108, 110 may be utilized tocreate the best possible QoS experience for the user. Had there onlybeen one IP packet data stream, the QoS would have been lower. Forinstance, both IP packet data stream 106 a and IP packet data stream 108dropped two packets from their streams while IP packet data stream 110still dropped one packet from its stream. In addition, each of the IPpacket data streams 106 a, 108, 110 experienced some latency for atleast one packet in their stream. However, the bonded IP packet datastream 126 experienced no packet loss and no latency.

Overall QoS (e.g., call quality) may be improved based on known orexpected network characteristics. For instance, WiFi networks typicallyexhibit very low latency and jitter characteristics but may becomeunreliable (e.g., dropping packets) as the hybrid mobile device movesfurther away from its WiFi access point. The cellular IP data networksmay not be as good as WiFi with respect to jitter and latency but theytend to be more reliable and do not drop as many packets. By combiningthese separate IP packet data streams, one can achieve a higher overallQoS than either of the IP packet data streams separately. Moreover, ifthe WiFi IP packet data stream is losing its reliability as a result ofmoving away from an access point and is finally lost completely, therehas been a graceful, non jarring natural handoff from the WiFi networkto the cellular data network.

FIG. 6 illustrates a bonded IP packet data stream generated on thecomputer device 102 for a plurality of IP packet data streams 106 a,108, 110 according to another embodiment of the invention. In thisembodiment, the bonded IP packet data stream is based on packet quality.Thus, the IP packet data stream assembly policy may be more qualityoriented as opposed to first to arrive oriented. For instance, thepolicy may evaluate packets in corresponding time slots from eachreceived IP packet data stream 106 a, 108, 110 to determine which IPpacket data stream 106 a, 108, 110 provided the highest quality packet.In this example, the bonded IP packet data stream may be comprised ofthe following sequence of packets 1 b, 2 a, 3 b, 4 b, 5 c, and 6 a. Eachof these packets is cross-hatched for illustrative purposes in theoriginal streams to indicate that it is the highest quality packet for agiven time slot. Moreover, only packets 2 a and 4 b were the first toarrive within their respective time slots indicating that the policydetermining the composition of the bonded IP packet data stream placesquality of the arrived packet over time of arrival.

The quality of a packet may be determined by the amount of informationit contains. If two corresponding packets are encoded using identicalmethods (e.g., codec, codec settings, input audio data, etc), one canassume that the packet that is larger will contain more information, andtherefore provide a higher quality audio for the given time slot.

As a matter of practice, the non-cellular IP data stream can alwaysbeing sent at “100%” quality. The quality of the cellular IP packet datastream may be varied by encoding partial information about the timeslot. For example, high-frequency audio may be discarded at thetransmitter side if it is expected that the packet will not be requiredat the receiver side. Even if the packet is needed due to all othercorresponding packets for that time slot having been dropped, thequality is still sufficient to provide a satisfactory experience(playback) to the user.

In this scheme, the quality of the cellular IP packet data stream canscale with the expected utility of that IP packet data stream. If thecellular IP packet data stream is only intended to fix “gaps” in theWiFi stream, it can be of lower quality—and can be considered more of anerror-correction scheme than full redundancy. This has a differenteffect than sending only 33% of total packets to save costs becausehaving a packet that has 33% of the audio information may be better thanonly having 33% of packets.

Some examples may be described using the expression “in one example” or“an example” along with their derivatives. These terms mean that aparticular feature, structure, or characteristic described in connectionwith the example is included in at least one example. The appearances ofthe phrase “in one example” in various places in the specification arenot necessarily all referring to the same example.

Some examples may be described using the expression “coupled”,“connected”, or “capable of being coupled” along with their derivatives.These terms are not necessarily intended as synonyms for each other. Forexample, descriptions using the terms “connected” and/or “coupled” mayindicate that two or more elements are in direct physical or electricalcontact with each other. The term “coupled,” however, may also mean thattwo or more elements are not in direct contact with each other, but yetstill co-operate or interact with each other.

It is emphasized that the Abstract of the Disclosure is provided tocomply with 37 C.F.R. Section 1.72(b), requiring an abstract that willallow the reader to quickly ascertain the nature of the technicaldisclosure. It is submitted with the understanding that it will not beused to interpret or limit the scope or meaning of the claims. Inaddition, in the foregoing Detailed Description, it can be seen thatvarious features are grouped together in a single example for thepurpose of streamlining the disclosure. This method of disclosure is notto be interpreted as reflecting an intention that the claimed examplesrequire more features than are expressly recited in each claim. Rather,as the following claims reflect, inventive subject matter lies in lessthan all features of a single disclosed example. Thus the followingclaims are hereby incorporated into the Detailed Description, with eachclaim standing on its own as a separate example. In the appended claims,the terms “including” and “in which” are used as the plain-Englishequivalents of the respective terms “comprising” and “wherein,”respectively. Moreover, the terms “first,” “second,” “third,” and soforth, are used merely as labels, and are not intended to imposenumerical requirements on their objects.

What is claimed is:
 1. A method comprising: in a computer devicecommunicable with a communications server and a communication device,the communications server situated in an Internet Protocol (IP) basedpacket data network: receiving multiple concurrent IP packet datastreams each IP packet data stream representative of the same contentreceived over corresponding multiple communication links, wherein anoriginal IP packet data stream comes from the communications server andat least one IP packet data stream representative of the original IPpacket data stream traverses a communication link through thecommunication device before arriving at the computer device; determininga first to arrive packet in each time slot from among corresponding timeslots of the multiple concurrent IP packet data streams; and creating abonded IP packet data stream by selecting the first to arrive packet foreach time slot from among corresponding time slots of the multipleconcurrent IP packet data streams.
 2. The method of claim 1, the one ormore communication links comprising one or more of an Ethernetcommunication link, an 802.11 WiFi network communication link, acellular IP data communication link, an 802.16 WiMax networkcommunication link, a wireless network communication link operatingwithin a frequency range of 100 MHz and 700 MHz, a wireless networkcommunication link operating within a frequency range of 3.5 GHz and 3.7GHz a wireless network communication link operating at or above 35 GHz.3. The method of claim 2, the cellular IP data communication linkutilizing a protocol based on one of a General Packet Radio Service(GPRS), Enhanced Data for GSM Evolution (EDGE), Evolution-Data Optimized(EV-DO), High Speed Packet Data (HSPD), High Speed Downlink PacketAccess (HSPDA), Long-Term Evolution (LTE), Voice-over Long-TermEvolution (VoLTE), Wideband Code Division Multiple Access (WCDMA),Universal Mobile Telecommunications System (UMTS), or High Rate PacketData (HRPD).
 4. The method of claim 3, a portion of the communicationlink for the at least one IP packet data stream representative of theoriginal IP packet data stream that traverses a communication linkthrough the communication device before arriving at the computer devicecomprising a wireless communication link between the computer device andthe communication device.
 5. The method of claim 3, a portion of thecommunication link for the at least one IP packet data streamrepresentative of the original IP packet data stream that traverses acommunication link through the communication device before arriving atthe computer device comprising a wired communication link between thecomputer device and the communication device.
 6. The method of claim 3,the received multiple concurrent IP packet data streams comprising: atleast on IP packet data stream traversing an Ethernet communication linkbetween the communications server and the computer device.
 7. The methodof claim 3, the received multiple concurrent IP packet data streamscomprising: at least on IP packet data stream traversing an 802.11 WiFicommunication link between the communications server and the computerdevice.
 8. The method of claim 3, the received multiple concurrent IPpacket data streams comprising: at least on IP packet data streamtraversing an 802.11 WiFi communication link between the communicationsserver and the communication device.
 9. The method of claim 3, thereceived multiple concurrent IP packet data streams comprising: at leaston IP packet data stream traversing a cellular IP data communicationlink between the communications server and the communication device. 10.The method of claim 1, the IP packet data streams comprising aVoice-over Internet Protocol (VoIP) media stream.
 11. The method ofclaim 11, the VoIP media stream comprised of Real-time TransportProtocol (RTP) packets.
 12. A computer device communicable with acommunications server and a communication device, the communicationsserver situated in an Internet Protocol (IP) based packet data network,the computer device comprising: a memory unit for storing code; at leastone processor for executing the stored code to: receive multipleconcurrent IP packet data streams each IP packet data streamrepresentative of the same content received over corresponding multiplecommunication links, wherein an original IP packet data stream comesfrom the communications server and at least one IP packet data streamrepresentative of the original IP packet data stream traverses acommunication link through the communication device before arriving atthe computer device; determine a first to arrive packet in each timeslot from among corresponding time slots of the multiple concurrent IPpacket data streams; and create a bonded IP packet data stream byselecting the first to arrive packet for each time slot from amongcorresponding time slots of the multiple concurrent IP packet datastreams.
 13. The computer device of claim 12, the one or morecommunication links comprising one or more of an Ethernet communicationlink, an 802.11 WiFi network communication link, a cellular IP datacommunication link, an 802.16 WiMax network communication link, awireless network communication link operating within a frequency rangeof 100 MHz and 700 MHz, a wireless network communication link operatingwithin a frequency range of 3.5 GHz and 3.7 GHz a wireless networkcommunication link operating at or above 35 GHz.
 14. The computer deviceof claim 13, the cellular IP data communication link utilizing aprotocol based on one of a General Packet Radio Service (GPRS), EnhancedData for GSM Evolution (EDGE), Evolution-Data Optimized (EV-DO), HighSpeed Packet Data (HSPD), High Speed Downlink Packet Access (HSPDA),Long-Term Evolution (LTE), Voice-over Long-Term Evolution (VoLTE),Wideband Code Division Multiple Access (WCDMA), Universal MobileTelecommunications System (UMTS), or High Rate Packet Data (HRPD). 15.The computer device of claim 14, a portion of the communication link forthe at least one IP packet data stream representative of the original IPpacket data stream that traverses a communication link through thecommunication device before arriving at the computer device comprising awireless communication link between the computer device and thecommunication device.
 16. The computer device of claim 14, a portion ofthe communication link for the at least one IP packet data streamrepresentative of the original IP packet data stream that traverses acommunication link through the communication device before arriving atthe computer device comprising a wired communication link between thecomputer device and the communication device.
 17. The computer device ofclaim 14, the received multiple concurrent IP packet data streamscomprising: at least on IP packet data stream traversing an Ethernetcommunication link between the communications server and the computerdevice.
 18. The computer device of claim 4, the received multipleconcurrent IP packet data streams comprising: at least on IP packet datastream traversing an 802.11 WiFi communication link between thecommunications server and the computer device.
 19. The computer deviceof claim 14, the received multiple concurrent IP packet data streamscomprising: at least on IP packet data stream traversing an 802.11 WiFicommunication link between the communications server and thecommunication device.
 20. The computer device of claim 14, the receivedmultiple concurrent IP packet data streams comprising: at least on IPpacket data stream traversing a cellular IP data communication linkbetween the communications server and the communication device.
 21. Thecomputer device of claim 12, the IP packet data streams comprising aVoice-over Internet Protocol (VoIP) media stream.
 22. The computerdevice of claim 21, the VoIP media stream comprised of Real-timeTransport Protocol (RTP) packets.